package cn.aku.d5_map;

import java.util.*;
/*
 本类用于测试Map接口
 */
public class Test1_Map {
    public static void main(String[] args) {
        //创建map对象
        Map<Integer,String> map=new HashMap<>();

        //向map中添加数据需同时指定K,V
        map.put(9527,"白骨精");
        map.put(9528,"黑熊精");
        map.put(9529,"狮子精");
        map.put(9530,"蜘蛛精");
        map.put(9531,"猪八戒");

        /*
         Map中存放的都是无序的数据
         Map中的K不可以重复，如果重复，此K对应的V会被覆盖
         //{9527=白骨精, 9528=黑熊精, 9529=狮子精}
         */
        System.out.println(map);
        //map.clear();清空集合
        System.out.println(map.containsKey(9527));//true
        System.out.println(map.containsValue("土地老儿"));//false
        System.out.println(map.get(9528));//获取指定K对应的V
        System.out.println(map.remove(9528));//根据指定K删除V，并返回V
        System.out.println(map.get(9528));//null,无元素
        System.out.println(map.keySet());

        Collection<String> v = map.values();//把map中的V取出来放入Collection中
        System.out.println(v);

        /*
         对Map集合进行迭代
         */
        //方式一，将map集合转换成set集合
        /*
         Set<K> keySet():把map集合中的K存到set集合中
         */
        Set<Integer> keySet = map.keySet();
        //获取Set集合的迭代器
        Iterator<Integer> it=keySet.iterator();

        while (it.hasNext()){
            Integer k = it.next();
            String value = map.get(k);//获取value
            System.out.println("{"+k+"="+value+"}");
        }


        //方式二
        /*
         Set<Entry<Integer,String>>entrySet();
         把map集合中的一组key&value整体放入set集合的一个Entry中
         一组K V 就是一个Entry
         */
        //1.把map转换成EntrySet
        Set<Map.Entry<Integer, String>> entrySet = map.entrySet();
        //获取迭代器
        Iterator<Map.Entry<Integer, String>> it2 = entrySet.iterator();
        while (it2.hasNext()){
            Map.Entry<Integer, String> entry = it2.next();
            Integer key = entry.getKey();
            String value = entry.getValue();
            System.out.println("{"+key+"="+value+"}");

        }
    }
}
